<!-- 
  map 
  场景：基于一个数组在个数不变的情况下 把数组中的每一项经过一定的映射(转换) 变成另外一个数组
  参数：函数 map((item,index)=>{ return xxx })  xxx是什么 新数组中的每一项就是什么
  返回值：新数组 arr.map().filter()
  实际需求：
  const list = [ {name,code}, {name,code} ,{name,code}]
  newList 
  list.map(item => item.name)
  list.map(item=> item.code + 1)
  list.map(item=>{
    if(item.code === 'x'){
      return xxx
    }else{
      return yyy
    }
  })

-->

<!-- 
  filter 
  场景：基于一个数组进行过滤筛选 把满足条件的项 组成一个新数组返回
  参数：回调函数 filter((item,index)=> 判断的条件)
  返回值：新数组
  例子
  [1,2,3] -> [1,3]
  filter(item => item/2 !== 0 )
  const list = [ {name,code}, {name,code} ,{name,code}]
  filter(item=> item.code > 2)
-->

<!-- 
  includes 
  判断方法： 返回值都是布尔值 作为判断条件存在 判断一个数组中是否包含传入的值
  arr.includes(value)
-->


<!-- 
  作业：
-->

<script>
  const list = [
    {
      name: '张三',
      age: 18,
      height: 180
    },
    {
      name: '李四',
      age: 20,
      height: 170
    },
    {
      name: '王五',
      age: 28,
      height: 180
    }
  ]

  const targetList = [
    ['张三', 18, 180],
    ['李四', 20, 170],
    ['王五', 28, 180],
  ]
  /* 
    编写一个函数transList 输入为list,输出为targetList
  /*
    优化这个函数可以自由的决定当前想要哪些字段
    transList(list,['name']) 返回值为: 
    const targetList = [
      ['张三'],
      ['李四'],
      ['王五'],
    ]
    transList(list,['name','age']) 返回值为: 
    const targetList = [
      ['张三', 18],
      ['李四', 20],
      ['王五', 28],
    ]
  */
  function transList (list, keyList) {
    // 处理逻辑
    // 思路：
    // 1.原数组和新数组个数不变 新数组中的每一项都是基于原数组中的每一项映射过来的 map
    return list.map(item => {
      const _arr = []
      if (!keyList) {
        // 2. 往内层数组中填东西 每个item中的value
        Object.keys(item).forEach(key => {
          _arr.push(item[key])
        })
      } else {
        // 2. 往内层数组中填东西 每个item中的value
        Object.keys(item).forEach(key => {
          // 3. 加一个判断条件 不是所有项都有机会进入_arr 必须能在第二个参数中找到才有这个
          if (keyList.includes(key)) {
            _arr.push(item[key])
          }
        })
      }

      return _arr
    })

  }

  const list0 = transList(list, ['name', 'age'])
  const list1 = transList(list)
  console.log(list0,list1)
  // const list0 = transList(list)
  // const list1 = transList(list, ['name'])
  // const list2 = transList(list, ['name', 'age'])
  // console.log(list0, list1, list2)
</script>